Skip to main content

qiqi.eo.dialog

eo.dialog 模块允许你以对话框的形式打开一个新的表单。

新增

create(options): Promise<DialogApi>

options 对象属性如下:

参数说明类型默认值
entityName对象名称string-
passParams透传参数,在新打开的表单中,可以通过 PageContext.getPassParams() 获取Record<string, any>-
title标题string-
cancelText取消按钮的文字string取消
confirmText保存按钮的文字string保存

DialogApi

方法说明
close(closeOptions?: IDialogCloseOptions): void关闭

关闭对话框参数 IDialogCloseOptions 属性如下:

参数说明类型默认值
force强制关闭,不会提示用户数据是否发生变更的提示,直接关闭对话框booleanfalse

示例

需求清单:

  • 打开新增人员对话框
  • 设置人员名称默认值为 "企企"
  • 拦截人员的数据保存,并将相关数据返回给调用表单,并关闭人员对话框(人员不进行服务端保存)

我们在目标单据上需要定义一下脚本内容:

// 前置逻辑忽略,重点关注对话框部分的逻辑


// 打开一个人员的新增对话框
const dialogApi = await qiqi.eo.dialog.create({
// 通过 entityName 指定表单的业务对象是人员(User)
entityName: 'User',
passParams: {
// 通过透传参数,传递名称默认值,在人员的脚本中,需要接收这个值,并进行赋值
username: '企企',
// 通过透传参数,传递保存的回调函数,在人员的脚本中,需要对保存进行拦截,并调用该函数返回人员的值
onSaved: (userValue) => {
console.log('userValue', userValue);
// 当接收到人员表单的保存回调时,关闭对话框,并通过 force = true 来强制关闭对话框
dialogApi.close({
force: true
});
}
}
})

同时,我们需要在智元平台中,给 "人员" 增加脚本内容:


thisApp.formOnLoad = async (ctx) => {
// 通过 PageContext 获取到透传参数
const passParams = ctx.getPageContext().getPassParams();

if(passParams) {
// 从 passParams 中获取到传递的名称初始值和回调函数
const { username } = passParams;
// 使用 username 给表单的 name 字段赋值
ctx.getFormContext().form.getField('name').value = username;
}
}

// 监听人员表单保存的时间
thisApp.beforeSave = ctx => {
// 通过 PageContext 获取到透传参数
const passParams = ctx.getPageContext().getPassParams();

if(passParams) {
// 调用前置表单传递的 onSaved,并通过 cancel 取消本次保存
passParams.onSaved?.(ctx.getCurrentContext().value);
ctx.getCurrentContext().cancel();
}

}